op 	 {
  name: "NcclReduce"
  input_arg {
    name: "input"
    type_attr: "T"
    number_attr: "num_devices"
  }
  output_arg {
    name: "data"
    type_attr: "T"
  }
  attr {
    name: "reduction"
    type: "string"
    allowed_values {
      list {
        s: "min"
        s: "max"
        s: "prod"
        s: "sum"
      }
    }
  }
  attr {
    name: "T"
    type: "type"
    allowed_values {
      list {
        type: DT_HALF
        type: DT_FLOAT
        type: DT_DOUBLE
        type: DT_INT32
        type: DT_INT64
      }
    }
  }
  attr {
    name: "num_devices"
    type: "int"
    has_minimum: true
    minimum: 1
  }
  is_stateful: true
}
